namespace devtm.Aop.Emit
{
    using System;
    

    [Serializable]
    public class EmitDelegateInvokeExpression : EmitExpression
    {
        private EmitExpressionCollection parameters;
        private EmitExpression targetObject;


        public EmitDelegateInvokeExpression()
        {
            this.parameters = new EmitExpressionCollection();
        }

        public EmitDelegateInvokeExpression(EmitExpression targetObject)
        {
            this.parameters = new EmitExpressionCollection();
            this.TargetObject = targetObject;
        }

        public EmitDelegateInvokeExpression(EmitExpression targetObject, params EmitExpression[] parameters)
        {
            this.parameters = new EmitExpressionCollection();
            this.TargetObject = targetObject;
            this.Parameters.AddRange(parameters);
        }

        public EmitExpressionCollection Parameters
        {
            get
            {
                return this.parameters;
            }
        }

        public EmitExpression TargetObject
        {
            get
            {
                return this.targetObject;
            }
            set
            {
                this.targetObject = value;
            }
        }



        public override System.Collections.Generic.IEnumerable<Mono.Cecil.Cil.Instruction> Compile()
        {
            throw new NotImplementedException();
        }
    }
}
